package com.or.config;

import com.or.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author wei
 * @date 2025/2/27 16:54
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 添加拦截器到应用中。
     *
     * @param registry 拦截器注册表，用于注册和管理拦截器。
     *
     * 本方法中，首先添加了一个处理跨域请求的拦截器CrossInterceptorHandler，应用到所有路径。
     * 接着添加了一个登录拦截器LoginInterceptor，应用到所有路径，但排除了/user/login和/error/**路径。
     * 这样配置是为了确保登录页面和错误页面不受登录拦截器的影响。
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login", "/error/**");
    }

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}